
import 'dart:convert';
import 'dart:math';

import 'package:shared_preferences/shared_preferences.dart';
import 'package:whoisdinting/global.dart';

class Data{
  List<WordCtg> ctgList=[];
  WordCtg selfCtg=WordCtg("自定义");

  Future<void> init() async {
    WordCtg ctg=WordCtg("花");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("玫瑰", "月季"));
    ctg.add(WordPair.valueOf("薰衣草", "满天星"));

    ctg=WordCtg("人物");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("孟非", "乐嘉"));
    ctg.add(WordPair.valueOf("金庸", "古龙"));
    ctg.add(WordPair.valueOf("福尔摩斯", "工藤新一"));
    ctg.add(WordPair.valueOf("甄子丹", "李连杰"));
    ctg.add(WordPair.valueOf("谢娜张杰", "邓超孙俪"));
    ctg.add(WordPair.valueOf("包青天", "狄仁杰"));
    ctg.add(WordPair.valueOf("那英", "韩红"));
    ctg.add(WordPair.valueOf("成吉思汗", "努尔哈赤"));
    ctg.add(WordPair.valueOf("郭德纲", "周立波"));
    ctg.add(WordPair.valueOf("谢娜", "李湘"));
    ctg.add(WordPair.valueOf("董永", "许仙"));
    ctg.add(WordPair.valueOf("刘诗诗", "刘亦菲"));
    ctg.add(WordPair.valueOf("张韶涵", "王心凌"));
    ctg.add(WordPair.valueOf("小沈阳", "宋小宝"));
    ctg.add(WordPair.valueOf("赵敏", "黄蓉"));

    ctg=WordCtg("典故");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("贵妃醉酒", "黛玉葬花"));

    ctg=WordCtg("蔬菜水果");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("橙子", "橘子"));
    ctg.add(WordPair.valueOf("白菜", "生菜"));

    ctg=WordCtg("乐器");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("吉他", "琵琶"));

    ctg=WordCtg("职业");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("警察", "捕快"));
    ctg.add(WordPair.valueOf("作家", "编剧"));
    ctg.add(WordPair.valueOf("魔术师", "魔法师"));
    ctg.add(WordPair.valueOf("保安", "保镖"));

    ctg=WordCtg("服饰");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("婚纱", "喜服"));
    ctg.add(WordPair.valueOf("鸭舌帽", "遮阳帽"));
    ctg.add(WordPair.valueOf("近视眼镜", "隐形眼镜"));
    ctg.add(WordPair.valueOf("唇膏", "口红"));

    ctg=WordCtg("节日");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("情人节", "光棍节"));

    ctg=WordCtg("食物");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("辣椒", "芥末"));
    ctg.add(WordPair.valueOf("烤肉", "涮肉"));
    ctg.add(WordPair.valueOf("鱼香肉丝", "四喜丸子"));
    ctg.add(WordPair.valueOf("铁观音", "碧螺春"));
    ctg.add(WordPair.valueOf("土豆粉", "酸辣粉"));
    ctg.add(WordPair.valueOf("酸菜鱼", "水煮鱼"));
    ctg.add(WordPair.valueOf("泡泡糖", "棒棒糖"));
    ctg.add(WordPair.valueOf("口香糖", "木糖醇"));
    ctg.add(WordPair.valueOf("牛奶", "豆浆"));
    ctg.add(WordPair.valueOf("大白兔", "金丝猴"));
    ctg.add(WordPair.valueOf("小笼包", "灌汤包"));
    ctg.add(WordPair.valueOf("麻婆豆腐", "皮蛋豆腐"));
    ctg.add(WordPair.valueOf("果粒橙", "鲜橙多"));
    ctg.add(WordPair.valueOf("面包", "蛋糕"));
    ctg.add(WordPair.valueOf("葡萄", "提子"));
    ctg.add(WordPair.valueOf("油条", "麻花"));
    ctg.add(WordPair.valueOf("牛肉干", "猪肉脯"));

    ctg=WordCtg("交通工具");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("自行车", "电动车"));
    ctg.add(WordPair.valueOf("公交", "地铁"));

    ctg=WordCtg("地名");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("杭州", "苏州"));
    ctg.add(WordPair.valueOf("香港", "台湾"));
    ctg.add(WordPair.valueOf("首尔", "东京"));

    ctg=WordCtg("动物");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("海豚", "海狮"));
    ctg.add(WordPair.valueOf("蝴蝶", "蜜蜂"));

    ctg=WordCtg("其他");
    ctgList.add(ctg);
    ctg.add(WordPair.valueOf("气泡", "水泡"));
    ctg.add(WordPair.valueOf("作文", "论文"));
    ctg.add(WordPair.valueOf("语无伦次", "词不达意"));
    ctg.add(WordPair.valueOf("勇往直前", "全力以赴"));
    ctg.add(WordPair.valueOf("美人心计", "倾世皇妃"));
    ctg.add(WordPair.valueOf("天天向上", "非诚勿扰"));
    ctg.add(WordPair.valueOf("流星花园", "花样男子"));
    ctg.add(WordPair.valueOf("鼠目寸光", "井底之蛙"));
    ctg.add(WordPair.valueOf("十面埋伏", "四面楚歌"));
    ctg.add(WordPair.valueOf("壁纸", "贴画"));
    ctg.add(WordPair.valueOf("童话", "神话"));
    ctg.add(WordPair.valueOf("富二代", "高富帅"));
    ctg.add(WordPair.valueOf("小品", "话剧"));
    ctg.add(WordPair.valueOf("麦克风", "扩音器"));
    ctg.add(WordPair.valueOf("剩女", "御姐"));
    ctg.add(WordPair.valueOf("班主任", "辅导员"));
    ctg.add(WordPair.valueOf("森马", "以纯"));
    ctg.add(WordPair.valueOf("纸巾", "手帕"));
    ctg.add(WordPair.valueOf("图书馆", "图书店"));
    ctg.add(WordPair.valueOf("洗发露", "护发素"));
    ctg.add(WordPair.valueOf("洗衣粉", "皂角粉"));
    ctg.add(WordPair.valueOf("同学", "同桌"));
    ctg.add(WordPair.valueOf("裸婚", "闪婚"));
    ctg.add(WordPair.valueOf("蜘蛛侠", "蝙蝠侠"));
    ctg.add(WordPair.valueOf("结婚", "订婚"));
    ctg.add(WordPair.valueOf("过山车", "碰碰车"));
    ctg.add(WordPair.valueOf("生活费", "零花钱"));
    ctg.add(WordPair.valueOf("奖牌", "金牌"));
    ctg.add(WordPair.valueOf("甄嬛传", "红楼梦"));
    ctg.add(WordPair.valueOf("老佛爷", "老天爷"));
    ctg.add(WordPair.valueOf("丑小鸭", "灰姑娘"));
    ctg.add(WordPair.valueOf("双胞胎", "龙凤胎"));
    ctg.add(WordPair.valueOf("神雕侠侣", "天龙八部"));
    ctg.add(WordPair.valueOf("手机", "座机"));
    ctg.add(WordPair.valueOf("水盆", "水桶"));
    ctg.add(WordPair.valueOf("枕头", "抱枕"));

    SharedPreferences prefs = await SharedPreferences.getInstance();
    selfCtg.jsonToList(prefs.getString(Global.SELF_WORDS));
    ctgList.add(selfCtg);
  }

  WordPair getRandom(){
    Random random=Random();
    WordCtg ctg=ctgList[random.nextInt(ctgList.length)];
    WordPair wp=ctg.pairList[random.nextInt(ctg.pairList.length)];
    return wp;
  }

  Future<void> addSelf(String word1, String word2) async {
    bool exist=false;
    for(WordPair wp in selfCtg.pairList){
      if( (wp.word1 == word1 && wp.word2 == word2) || (wp.word1 == word2 && wp.word2 == word1)){
        exist=true;
        break;
      }
    }
    if(! exist){
      selfCtg.add(WordPair.valueOf(word1, word2));
      SharedPreferences prefs = await SharedPreferences.getInstance();
      prefs.setString(Global.SELF_WORDS, selfCtg.listToJson());
    }
  }
}

class WordCtg{
  WordCtg(String name){
    this.name=name;
  }
  void add(WordPair wp){
    pairList.add(wp);
  }
  String name;
  List<WordPair> pairList=[];

  String listToJson(){
    return jsonEncode(pairList);
  }
  void jsonToList(String json){
    pairList=[];
    if(json != null){
      print(json);
      List<dynamic> list=jsonDecode(json);
      for(dynamic map in list){
        pairList.add(WordPair.fromMap(map));
      }
    }
  }
}

class WordPair{
  String word1;
  String word2;

  static WordPair valueOf(String word1, String word2){
    WordPair wp=WordPair();
    wp.word1=word1;
    wp.word2=word2;
    return wp;
  }

  Map toJson() {
    Map map = new Map();
    map["w1"] = this.word1;
    map["w2"] = this.word2;

    return map;
  }
  static WordPair fromMap(Map<String, dynamic> map) {
    WordPair obj = new WordPair();
    obj.word1 = map['w1'];
    obj.word2 = map['w2'];

    return obj;
  }
}

class Person{
  Person(this.word){
    isDint=false;
    isOut=false;
    isView=false;
  }
  String word;
  bool isDint;//是否卧底
  bool isOut;//是否出局
  bool isView;//是否已查看
}
